﻿namespace Baggr
{
    using System;
    using System.Diagnostics;
    using System.Security.Cryptography;
    using System.Text;

    public static class StringHelper
    {
        /// <summary>
        /// Вычеслить гуид по строк.
        /// </summary>
        /// <param name="value">
        /// Обрабатываемая строка.
        /// </param>
        /// <returns>
        /// Гуид, который соответствует этой строке.
        /// </returns>
        public static Guid GetGuidByString(this string value)
        {
            if(string.IsNullOrEmpty(value))
                return new Guid();

            var data = Encoding.UTF8.GetBytes(value);
            var md5 = MD5.Create();
            Debug.Assert(md5 != null, "Алгоритм хеширования должен быть создан.");
            var hash = md5.ComputeHash(data);
            Debug.Assert(hash.Length == 16, "Хеш должен быть 16 байт.");
            return new Guid(hash);
        }
    }
}
